/*
 * @Author: wangxiaojie
 * @LastEditors: wangxiaojie
 */
// this指向

// function foo () {
//   console.log(this, 'this')
// }
// var bar = new foo()

// apply / call 基础用法
// function foo (name, price) {
//   this.name = name
//   this.price = price
// }

// function Food (category, name, price) {
//   // foo.call(this, name, price)
//   foo.apply(this, [name, price])
//   this.category = category
//   console.log(this)
// }

// new Food('食物', '汉堡', '5块钱')

// bind 基础用法
// var food = {
//   name: '',
//   price: '5块钱',
//   getPrice: function (place) {
//     console.log(place + this.price)
//   }
// }

// food.getPrice('kfc')

// var getPrice1 = food.getPrice.bind({price: '7块钱'}, 'jgm')
// getPrice1()


// apply 实现 bind
// Function.prototype.bind = function (...rest1) {
//   const _this = this
//   const content = rest1.shift()
//   return function (...rest2) {
//     console.log(content, ...rest1, ...rest2)
//     return _this.apply(content, [...rest1, ...rest2])
//   }
// }
// var food = {
//   name: '',
//   price: '3块钱',
//   getPrice: function (place) {
//     console.log(place + this.price)
//   }
// }

// food.getPrice('kfc')

// var getPrice1 = food.getPrice.bind({price: '7块钱'}, 'jgm')
// getPrice1(5555)